package _18_剑指OfferII;

import java.util.Arrays;

public class _014_剑指OfferII字符串中的变位词 {

    public boolean checkInclusion(String s1, String s2) {
        int len1 = s1.length();
        int len2 = s2.length();
        if (len1 > len2) return false;
        char[] chars1 = s1.toCharArray();
        char[] chars2 = s2.toCharArray();
        int[] map1 = new int[26];
        int[] map2 = new int[26];
        for (char c : chars1) {
            map1[c - 'a']++;
        }

        // 滑动比较s2的值
        for (int i = 0; i < len1; i++) {
            map2[chars2[i] - 'a']++;
        }
        if (Arrays.equals(map1, map2)) return true;

        // 窗口滑动
        for (int i = len1; i < len2; i++) {
            map2[chars2[i - len1] - 'a']--;
            map2[chars2[i] - 'a']++;
            if (Arrays.equals(map1, map2)) return true;
        }
        return false;
    }

}
